package com.ruoyi.system.service.impl;

import com.ruoyi.common.core.domain.entity.DocFile;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.mapper.DocAccMapper;
import com.ruoyi.system.service.DocAccService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


@Service
public class DocAccServiceImpl  implements DocAccService {
    @Autowired
    private DocAccMapper docAccMapper;


    /**
     * 获取文档信息详细信息
     */
    @Override
    public List<DocFile> selectDocFileByFileId(Long id) {
        Long securityLevel = SecurityUtils.getSecurityLevel();
        return docAccMapper.selectDocFileByFileId(id);
    }

    /**
     * 新增附件信息
     */
    @Override
    public int insertAccUpdate(DocFile docFile) {
        Date date = new Date();
        docFile.setUpTime(date);

//        Long docmentFileId = docFile.getFileId();
        Long docmentId = docFile.getId();
        //查询该文件是否为第一个
        int num = docAccMapper.selectNum(docmentId);
//        int fileDelFlag = docAccMapper.selectFileDelFlag(docmentId);
        if (num == 0 ) {
            docFile.setVersions("1.0");
            return docAccMapper.insertAccUpdate(docFile);
        } else  {
            String maxEdition = docAccMapper.selectMaxEdition();
            //新增下一个版本默认增加0.1
            double NextEdition = Double.valueOf(maxEdition) + 0.1;
            BigDecimal bigDecimal = new BigDecimal(NextEdition);
            NextEdition = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
            //转string 给前端
            String edition = String.valueOf(NextEdition);
            docFile.setVersions(edition);
            return docAccMapper.insertAccUpdateAdd(docFile);
        }

    }

    /**
     * 上传请求
     */
    @Override
    public Long insertPathName(DocFile docFile) {
        docAccMapper.insertPathName(docFile);
        return docFile.getFileId();
    }

    /**
     * 删除附件
     */
    @Override
    public int deleteByIds(Long[] fileId) {
        return docAccMapper.deleteByIds(fileId);
    }

    /***
     * 修改项目文档信息状态:审核通过
     */
    @Override
    public int updateYesState(Long fileId)     {
        return docAccMapper.updateYesState(fileId);
    }

    /***
     * 修改项目文档信息状态:审核不通过
     */
    @Override
    public int updateNoState(Long fileId) {
        return docAccMapper.updateNoState(fileId);
    }

    /***
     * 上传文件 添加文件路径 url 文件唯一标识
     */
    @Override
    public int updateAccUpdate(DocFile docFile) {
        return docAccMapper.updateAccUpdate(docFile);
    }
}
